char*language[]={"fortran","basic","pascal","java","c#"};

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:14:57
char*language[]={"fortran","basic","pascal","java","c#"};
*language[2]的值是字母p
还有char str[50]="xyz" str+2 表示什么,为什么
第一问:为什么上面是字母p
第二问:str是否为xy,为什么

由于char*在C中表示字符串,因此,language[2]就是pascal的首字母地址。
还一种更恰当的理解是[]不考虑内存分配等价于*故language可以看成char**类型,内存分配如下:
fortran0
basic000
pascal00
java0000
c#000000
这里的0是ASCII的\0
language是[0][0]位置,language[2]正好是第三行第一列

第二问同理,记得数组常量始终是指向数组的第一个元素地址即可,因此str+2=str[2]=z

str+2 表示从起始位置向后移两位,也就是相当于
"z"所在内存中的地址。

数组指针指向的是第一个元素的地址。

z